package com.xyoto.community.mapper.main;

import com.xyoto.community.entity.main.Topic;
import com.xyoto.community.po.TopicSimplePO;
import com.xyoto.community.vo.TopicDetailVo;
import com.xyoto.community.vo.TopicListVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ClassName:   话题mapper
 * Author:      挽风
 * Date:        2020
 * Copyright:   2020 by 挽风1.0版本
 * Description:
 **/
public interface TopicMapper {

    /**
     * 根据话题id查询话题是否存在
     *
     * @param topicId 话题id
     * @return 数量
     */
    Integer getTopicIsExistById(Integer topicId);

    /**
     * 获取话题列表
     *
     * @return 话题列表类
     */
    List<TopicListVo> getTopicList(Integer endIndexId, Short deleteStatus);

    /**
     * 根据话题id查话题
     *
     * @param topicId
     * @return
     */
    Topic selectOneByTopicId(Integer topicId);

    /**
     * 通过话题id获取详情
     *
     * @param topicId 话题id
     * @return 话题详情dto
     */
    TopicDetailVo selectDetailByTopicId(Integer topicId, Short deleteStatus);

    /**
     * 新增话题
     *
     * @param topic
     * @return
     */
    Integer saveTopic(Topic topic);

    /**
     * 根据一组话题id查询话题
     *
     * @param topicIdList
     * @return
     */
    List<Topic> selectListBatchTopicIds(@Param("topicIdList") List<Integer> topicIdList);

    /**
     * 根据话题id集合查询话题简单信息列表
     *
     * @param topicIds
     * @return
     */
    List<TopicSimplePO> getTopicSimpleList(List<Integer> topicIds);

    /**
     * 根据话题id查询话题是否存在 放回个数
     *
     * @param topicId      话题id
     * @param deleteStatus 删除状态
     * @return topic
     */
    Integer countTopicIsExistById(Integer topicId, Short deleteStatus);

    /**
     * 删除话题
     *
     * @param topic 实体
     * @return
     */
    Integer removeTopic(Topic topic);

    /**
     * 获取话题标题
     *
     * @param topicId 话题id
     * @return 标题
     */
    String getTopicTitleById(Integer topicId);

    /**
     * 根据一组话题id获取话题详情
     *
     * @param topicIdList
     * @return
     */
    List<TopicListVo> selectBatchTopicIds(List<Integer> topicIdList);

    /**
     * 根据用户id获取用户创建的话题列表
     *
     * @param userId
     * @param deleteStatus
     * @return
     */
    List<Topic> selectListByUserIdAndDeleteStatus(@Param("userId") Integer userId, @Param("deleteStatus") Short deleteStatus);

    /**
     * 根据话题实体类修改数据库记录
     * @author 廖振辉
     * @param topic
     * @return {@link Integer}
     */
    Integer updateByTopicId(Topic topic);


//    /**
//     *查询话题的状态相关信息
//     * @return
//     */
//    List<TopicCachePO> findTopicStatusMessageList();

}
